package com.sky.controller.admin;

import com.sky.constant.MessageConstant;
import com.sky.result.Result;
import com.sky.utils.AliOssUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.UUID;

/**
 * 通用接口
 */
@RestController
@RequestMapping("/admin/common")
@Api(tags = "通用接口")
@Slf4j  //日志
public class CommonController {

    @Autowired
    private AliOssUtil aliOssUtil;

    /**
     * 文件上传
     * @param file
     * @return
     */
    @PostMapping("/upload")
    @ApiOperation("文件上传")
    public Result<String> upload(MultipartFile file){
        log.info("文件上传：{}",file);

        //try {
        //    //获取上传的文件的原始文件名
        //    String originalFilename = file.getOriginalFilename();
        //    //通过原始文件名获取文件的类型  即文件的后缀 .png  .jpg
        //    String extension = originalFilename.substring(originalFilename.lastIndexOf("."));
        //    //构建我们新的文件名称   为防止上传之后的文件重名，使用UUID来命名
        //    String ObjectName = UUID.randomUUID().toString() + extension;
        //
        //    //调用文件上传工具类  需要两个参数
        //        //第一个是byte[]数组，就是我们文件对象转成的数组
        //        //第二个是我们的上传之后的文件名称
        //        //返回的是一个我们文件的访问路径  也就是网址
        //    String filePath = aliOssUtil.upload(file.getBytes(), ObjectName);
        //    return Result.success(filePath);
        //} catch (IOException e) {
        //    log.error("文件上传失败：",e);
        //}
        ////如果上传失败，返回上传失败
        //return Result.error(MessageConstant.UPLOAD_FAILED);

        try {
            //获取上传的文件的原始文件名
            String originalFilename = file.getOriginalFilename();
            //通过原始文件名获取文件的类型  即文件的后缀 .png  .jpg
            String extension = originalFilename.substring(originalFilename.lastIndexOf("."));
            //构建我们新的文件名称   为防止上传之后的文件重名，使用UUID来命名
            String ObjectName = UUID.randomUUID().toString() + extension;

            //调用文件上传工具类  需要两个参数
                //第一个是byte[]数组，就是我们文件对象转成的数组
                //第二个是我们的上传之后的文件名称
                //返回的是一个我们文件的访问路径  也就是网址

            String filePath = aliOssUtil.upload(file.getBytes(), ObjectName);
            return Result.success(filePath);
        } catch (IOException e) {
            log.error("文件上传失败：",e);
        }
        //如果上传失败，返回上传失败
        return Result.error(MessageConstant.UPLOAD_FAILED);


    }



}
